from fastapi import FastAPI,Request
from fastapi.middleware.cors import CORSMiddleware  #跨域中间间
import uvicorn   #启动IIS服务

#路由一块的
from Server import APIServer  #使用自定义的url集中管理
from URL import Api #使用自定义的服务

# 错误处理模块
from fastapi.exceptions import RequestValidationError   #请求的错误处理类
from fastapi.responses import PlainTextResponse   #文本返回的形式
from starlette.exceptions import HTTPException as StarletteHttPException  #Http错误处理

app = FastAPI(
    title='我的API程序',
    description='这是我的FastAPI的初学的文档',
    version='1.0',
   # deprecated=True,
)
#region 使用服务（Server/server.py）

#使用了模型创建的服务于跨域服务，可以在Server文件夹下面配置
APIServer(app).createDataBaseTable().usecores()
Api(app).useApi()
#endregion
#region 错误处理
@app.exception_handler(StarletteHttPException)
def http_exception_hander(request,exc):
    """处理请求错误"""
    return PlainTextResponse(str(exc.detail),status_code=exc.status_code)
@app.exception_handler(RequestValidationError)
def http_requestException_hander(exc,request):
    return PlainTextResponse(str(exc))
#endregion
if __name__=='__main__':
    uvicorn.run('main:app',host='127.0.0.1',port=8000,reload=True,debug=True,workers=1)